\chapter{Az űrlap kezelő rendszer tudásmodellje}

	\label{ch5}

	A diplomaterv egyik legfontosabb momentuma az, hogy feltételeztük egy
	tudásmodell létezését, amely leírja az űrlapon használt fogalmakat magába
	foglaló tárgyterületet. Azonban erről a tudásmodellről eddig a létezésén kívül
	nem tételeztem fel semmit. Ebben a fejezetben megvizsgálom a különböző
	tudásmodellezési módszereket és azt, hogy a tárgyterületen felül hogyan
	képesek modellezni az űrlaphoz szükséges további információkat.
	
	\section{Tudásmodellezési technikák}
	
		Alapvetően kétféle módszer terjedt el tudás modellezésére: a szabály alapú
		és az ontológián alapúló modellek. Ezen módszerek alapvető célja, hogy
		reprezentációt adjanak valamely tudásra, és ezen reprezentáció felett
		lehetővé tegyék következtetési folyamatok alkalmazását.
	
%		\subsection{Szabály alapú modellek}
		
			A szabály alapú tudásmodellezés alapötlete az, hogy egy rendszerről alkotott
			tudásunkat a rendszerben igaznak vélt szabályok formájában írjuk le. Egy
			szabály két részből áll, egy feltétel és egy következmény állításból. A
			szabály pedig azt jelenti, hogy ha a modellben teljesül a feltétel, akkor a
			következménynek is teljesülnie kell.
		
			Szabály alapú modelleken történő következtetés során egy állítás igazságát
			kérdezzük meg a következtetőgéptől, amely megpróbál bizonyítást vagy
			cáfolatot adni rá az ismert szabályok és a megadott adatok alapján, melyeket
			a következtető a leggyakrabban törzs nélküli, azaz mindenkor teljesülő
			szabályok formájában tud kezelni.
		
%		\subsection{Ontológián alapúló modellek}	
		
			Az ontológián alapuló modellezés esetén a modellezett rendszer
			objektumait kategóriákba soroljuk és a kategóriák között definiálunk
			kölcsönhatásokat. A modellezett világban a tényleges kölcsönhatás az egyedi
			objektumok szintjén történik, de a következtetések zöme a kategóriák
			szintjén valósul meg. Ez a valódi világban is indokolt, hiszen a
			zöldségesnél a vásárló egy almát szeretne megvenni, azaz egy tetszőleges
			olyan objektumot, amely besorolható az alma kategóriába, és nem pedig egy
			adott almát.
			
			Az objektumok kategóriákba sorolásával megjósolhatóvá válnak az egyes
			objektumok tulajdonságai, illetve egy ismeretlen objektum az érzékelt
			tulajdonságai alapján besorolható a kategóriákba.
			
			Az ontológia alapú tudásreprezentálásnak az az előnye a szabály alapúval
			szemben, hogy könnyebb elkülöníteni a háttértudást, azaz a tárgyterület
			modellezését az aktuális helyzetet leíró adatoktól. Továbbá a jogi
			tárgyterület jobban modellezhető ontológiával és az Estrella projekt is ezt
			a megközelítést alkalmazza, így kézenfekvő megoldásként választom én is. A
			továbbiakban tehát a tudás modellezésére ontológia alapú technológiát fogok
			alkalmazni, név szerint a szemantikus web koncepcióját.
		
		\subsection{Szemantikus web megközelítés}
			
			\label{ch5:semweb-concept}
			
				A szemantikus web koncepció\cite{sw-book} Tim Berners-Lee
				cikkében\cite{semantic-web} jelent meg először, irányt mutatva az internet fejlesztésének. A
				szemantikus web szabványait, ahogy az összes webes szabványt is a
				W3C\cite{w3c-sw} munkacsoportjai dolgozzák ki és fejlesztik tovább.
			
		\begin{figure}[!ht]
			\centering
			\includegraphics[width=100mm,keepaspectratio]{figures/ch5/layerCake.png}
			\caption{A szemantikus web rétegdiagramja (Forrás: W3C\cite{w3c-sw})} 
			\label{fig:semweb-layer}
		\end{figure}
				
				A szemantikus web koncepcióját a legegyszerűbben a \ref{fig:semweb-layer}.
				ábra vizsgálatával érthetjük meg. Az ábrán rétegként vannak ábrázolva a
				szemantikus web egyes szabványai jelezve az egymásra épülésüket.
				
				A szemantikus web alapötlete, hogy a szabványok segítségével a web
				szereplői képesek leírni a tudásukat bizonyos tárgyterületről, amihez más
				szereplők hozzáférnek. Ezen a tudásbázison a szereplők képesek egyenként
				vagy közösen következtetni, és bizonyítást végezni. A bizonyítás, és minden
				másik féltől kapott tudást digitális aláírással és titkosítással
				hitelesítve létrejöhet a webes szereplők közötti bizalom. Ezzel a
				koncepcióval a webet egyetlen hatalmas elosztott tudásbázisként lehet
				kezelni, figyelembe véve a források hitelességét és a tudás
				bizonytalanságát is.
			
				A legalul látható URI szabvány egységes azonosítási formát biztosít az
				erőforrások számára lehetővé téve az egységes hivatkozásokat. Az e fölött
				jelzett XML szabvány könnyen feldolgozható formátumot ad tetszőleges
				tartalom leírására. Ezen szabványok nem csak a szemantikus web témakörében
				szerepelnek, máshol is igen elterjedtek.
			
				Az RDF (Resource Description Framework)\cite{rdf-primer} URI által
				azonosított erőforrások közötti kapcsolatokat írja le
				\emph{``alany-állítmány-tárgy''} hármasok segítségével. Az ilyen jellegű
				hármasok (állítások) egy halmazát RDF gráfnak hívjuk. Az RDF nem tesz 
				megkötést arra
				vonatkozólag, hogy milyen erőforrások szerepelhetnek egy hármas egyes
				pozícióiban, azaz semmi nem akadályozza meg, hogy egy állítmány szerepű
				erőforrás máshol az alany szerepét kapja. Ez a szabadság lehetővé teszi
				rendkívül bonyolult RDF gráfok építését is, megnövelve az RDF nyelv
				kifejezőerejét.
			
% 				Egy viszonylag újkeletü, de szabványosított és elterjedőben lévő
% 				 koncepciót
% 				és eszközkészletet ad a szemantikus web OWL (Web Ontology
% 				Language)\cite{owl} formátuma. A formátum egyedek és az azokat 
% 				tartalmazó osztályok leírására ad szemantikát. Az egyedekhez 
% 				rendelhetőek tulajdonságok, és az osztályokhoz megköthetőek, 
% 				hogy milyen tulajdonsághoz hány értéket rendel egy osztály-beli egyed.
% 				
% 				Az OWL formátum az RDF (Resource Description Framework)\cite{rdf-primer}
% 				szabványra építkezik, az RDF szintaktikához rendel osztályok és egyedek leírására
% 				alkalmas szemantikát. Az RDF URI (Unified Resource Identifier) által
% 				azonosított erőforrások közötti kapcsolatokat írja le
% 				``alany-állítmány-tárgy'' hármasok segítségével. Az ilyen jellegű hármasok
% 				(állítások) egy halmazát RDF gráfnak hívjuk. Az RDF nem tesz megkötést arra
% 				vonatkozólag, hogy milyen erőforrások szerepelhetnek egy hármas egyes 
% 				pozicióiban, azaz semmi nem akadályozza meg, hogy egy állítmány szerepű 
% 				erőforrás máshol az alany szerepét kapja. Ez a szabadság lehetővé teszi
% 				rendkívül bonyolult RDF gráfok építését is, megnövelve az RDF nyelv
% 				kifejezőerejét.
				
				Az RDF szabvány kifejező ereje egyben a gyengesége is, egy RDF gráfon
				bonyolult művelet lekérdezéseket végrehajtani. A leggyakoribb megközelítés
				az, hogy az RDF hármasokat kilistázva egy adatbázis-táblának megfeleltetve
				azt végeznek rajta SQL-jellegű lekérdezéseket. Ezt a megközelítést
				használja a legelterjedtebb RDF lekérdezőnyelv, a SPARQL\cite{sparql} is. Egy
				lekérdezésben hármasokból összekötött részgráfot adunk meg, esetleg
				változó-illesztésekkel egyes csomópontok helyén. A végrehajtáskor minden
				ilyen hármasból álló pár megfelel egy Join műveletnek az adattáblán, ami
				megnehezíti a bonyolult lekérdezések végrehajtását.
			
				Egy magasabb szintű, de kötöttebb szemantikát ad ezzel szemben az OWL (Web
				Ontology Language)\cite{owl}, illetve annak a három változata: OWL Lite, OWL
				DL és OWL Full. Az OWL Lite tartalmazza a
				legtöbb megkötést a szemantikával szemben, és ennek megfelelően ennek a
				legkisebb a kifejező ereje. A legtöbb alkalmazásban azonban ez is elegendő,
				hiszen tartalmazza már a az osztályok közötti teljes öröklődést
				(subClassOf), tulajdonságok közötti öröklődést (subPropertyOf) és egyedek
				definiálását is. Az egyetlen lényegesen korlátozó megkötés, hogy a
				tulajdonságok számossága csak 0 vagy 1 lehet, azaz egy egyed egy
				tulajdonságához legfeljebb csupán egyetlen értéket lehet rendelni. Ez a
				korlátozás azonban megkerülhető láncolt lista adatszerkezet alkalmazásával,
				de ez a megkötés jelentősen egyszerűsíti a következtetést.
				
				Ezt a korlátozást azonban feloldja az OWL DL, amely az én esetemben a
				legjobb választásnak bizonyult, mivel valamivel jobb a kifejezőereje a Lite
				változatnál, és a legtöbb következtető ezt a változatot támogatja. A neve
				is erre utal, DL - Descriptive Logic - leíró logikai változatnak nevezik. 
				
				Ennél jóval tovább megy az OWL Full, amely megengedi, hogy bizonyos egyedek
				osztályokként is viselkedjenek. Erre akkor van szükség, ha több fogalmi
				metaszintet szeretnénk modellezni. Erre szemléletes példa, ha rovartani
				leírás nem csak a rovarokat osztályozza, de modellezi az osztályozást is: a
				szúnyog faj egyede a rovar osztálynak, amely része (alosztálya) az
				ízeltlábúak osztályának. A ``rovar'' osztály és az ``ízeltlábúak osztálya''
				pedig egyedei a ``állattani besorolás'' osztálynak. A példában a ``rovar''
				egyrészt egy osztály, amelynek egyedei vannak, másrészt pedig egyed, amely
				tulajdonságokkal rendelkezik és eleme lehet osztályoknak. Ezt a fajta
				leírást azonban csak tényleg indokolt esetben szabad használni, mivel a
				kifejező ereje megegyezik az RDF-fel, és ennek megfelelően a következés is
				nehéz felette. A legtöbb következtető némely funkciója nem érhető el OWL
				Full ontológia betöltésekor, vagy rosszabb esetben hibát jelez betöltéskor.
				
				Az OWL formátum logikus és könnyen érthető szemantikát kategóriák és
				egyedek definiálására illetve az egyedek tulajdonságainak leírására.
				Azonban bizonyos esetekben nem ez a megfelelő leírás, szeretnénk egyszerűen
				szabályokat is megfogalmazni a tárgyterületen. Erre példát az általam
				példaként modellezett szociális támogatás tárgyterületéről tudok hozni, a
				szabályozás egy táblázatban foglalja össze, hogy az egy főre jutó jövedelem 
				egyes intervallumaira hány pontot kap a hallgató. Ezt a táblázatot úgy
				tudtam a legkönnyebben modellezni, hogy minden egyes sorához hozzárendeltem
				egy ilyen jellegű szabályt: Ha X az egy főre eső jövedelem a hallgató
				családjában, és X nagyobb mint Y, de kisebb mint Z, akkor a hallgató erre a
				kritériumra W pontot kap. Az ehhez hasonló szabályok pusztán OWL
				segítségével csak nehezen lennének leírhatóak, és még nehezebb lenne
				bevonni azokat a következtetésbe.
				
				Ennek megoldására hozták létre az SWRL\cite{swrl} szabványt, amely szabályok
				leírására alkalmas OWL felett. A szabályoknak van feltétel és következmény részük, és
				lehet változókat is definiálni. Az egyetlen korlátozás a szabályokkal
				szemben, hogy a feltétel részben lévő ÉS-művelettel összekötött
				állításoknak legyen olyan sorrendezése, melyben a változókhoz egyértelműen
				lehessen értéket rendelni. Emiatt bár a szintaktikája megtévesztően
				hasonlít az elsőrendű logikára, a leíró képessége jelentősen kisebb.
			
				Következtetőgépnek a Clarck \& Parsia által fejlesztett
				nyílt forrású Pellet\cite{pellet} következtető 2.0.0 RC2 verzióját választottam.
				Ez a következtető teljes támogatást ad az OWL DL-nek megfelelő
				ontológiákra és az SWRL szabályokra. Teljesen JAVA technológiával
				írták, így könnyedén tudtam csatolni a projekthez. Azért esett a választásom
				a fejlesztés alatt álló RC (Release Candidate, kiadási jelölt) változatra, 
				mert a régebbi 1.5.6-os verzió nem támogatja teljes mértékben az SWRL 
				szabványt.

	\section{Űrlap meta-modell}

		\label{ch5:form-model}

		A tárgyterületi ontológiáról csak a létezését kell feltételeznem, illetve
		azt, hogy egy OWL DL leírásnak megfelelő ontológia legyen. Ebben a szakaszban
		azt írom le, hogy milyen további információkat kell megadni az űrlap
		leíráshoz és milyen formában. Az űrlap tervezésekor meg kell határozni a 
		kitöltendő mezőket, azok típusait, számosságukat, és azt, hogy hogyan
		kapcsolódnak a tárgyterülethez.
		
		Az űrlap metainformációk a tárgyterülethez hasonlóan OWL DL leírás
		formályában szerepelnek, aminek az az előnye, hogy közös következtetőgéppel 
		kezelhetőek, és egyszerű az űrlapot a tárgyterület fogalmaihoz kötni.
		
		Az első, és legfontosabb alapelv amit hoztam az űrlap leírásában az az, hogy
		az űrlap által a felhasználó egy tárgyterületbeli fogalmat példányosít, azaz
		egy a tárgyterületi modellben szerepelő osztályhoz hoz létre egy egyedet. Az
		űrlap tervezésekor azt kell modellezni, hogy az osztály egy egyedének milyen
		tulajdonságokkal kell rendelkezni, ami alapján a rendszer meghatározza, hogy
		milyen mezőket kell a felhasználó számára megjeleníteni kitöltésre.

		Példaként visszatérnék a már többször emlegetett szociális támogatás
		esetére. A tárgyterületi modell leírja a ``szociális támogatást igénylő
		hallgató'' osztályát, ami része a hallgatók osztályának, ami pedig része a
		személyek osztályának. A hallgató, aki szociális támogatást szeretne
		ígényelni, a rendszer segítségével a ``szociális támogatást igénylő
		hallgató'' osztályt példányosítja a saját adatainak megadásával. Az űrlap
		tervezés feladata pedig az, hogy meghatározzuk ezen osztály példányosításához
		szükséges mezőket.

		\subsection{Kitöltendő mezők megadása}

			Az OWL szabvány megengedi, hogy egy ontológiában olyan osztályokról vagy
			egyedekről tegyünk kijelentéseket, melyek egy másik ontológiában vannak
			definiálva. Ezt használtam ki a tárgyterület és az űrlap információk
			elkülönítésére. A tárgyterületi modell tartalmazza azon osztály(ok)
			definícióit, amelyeket a rendszer példányosításra lehetővé tesz. Továbbá
			a tárgyterület definiálja az egyes osztályokba tartozó egyedek
			tulajdonságait, mint például egy személy neve, vagy hallgató Neptun kódja.
			Ezen tulajdonságokhoz rendel a rendszer az űrlapon egy-egy mezőt.
			
			Ezen definíciókon felül a rendszernek szüksége van az egyes tulajdonságok
			kötésére az osztályokhoz, hogy listázhatóvá váljanak azon tulajdonságok,
			melyeknek értéket kell adni a példányosításhoz. Ezen kötés megadására
			többféle lehetőség létezik, a rendszerben viszont csak az egyik
			legegyszerűbb, és legáltalánosabban használható módszert alkalmaztam, amit az
			OWL kínál, a számossági axiómákat.
			
			Egy számossági axióma egy hármas, hivatkozik egy osztályra és egy
			tulajdonságra, amelyekhez hozzárendel egy számossági kritériumot. A
			számossági kritérium háromféle lehet, maximum, minimum illetve pontosan és
			mindegyikhez tartozik egy nem negatív egész szám. A maximum kritérium azt
			jelenti, hogy a megadott osztályba tartozó egyedek mindegyike legfeljebb
			a megadott számú értéket rendelhet a tulajdonsághoz. A minimum és a pontosan
			kritérium hasonlóképpen szabja meg a legalább illetve pontosan megadandó
			értékeket.
			
			Egy osztály-tulajdonság pároshoz több számossági kritérium is megadható,
			melyek között konjunkciót kell feltételezni, azaz mindegyiknek egyidejüleg
			kell teljesülnie. Ennek megfelelően egy pontosan X kritérium ekvivalens
			azzal, hogy egy min. X és egy max. X kritérium van megadva helyette.
			Megjegyezném még, hogy minden osztály-tulajdonság párosra implicit
			feltételezésként fennáll egy minimum nulla számossági kritérium. Ezen
			kritérium teljesülése triviális (nem lehet egy tulajdonsághoz nullánál
			kevesebb számú értéket rendelni), de formálisan szükséges a kijelentése.
			
			Ezzel a módszerrel egy osztály-tulajdonság pároshoz a rendszer intervallumot
			rendel és kitöltéskor a felhasználó határozza meg, hogy ezen intervallumon
			belül hány értéket rendel egy mezőhöz. A leggyakoribb tulajdonság amit
			egy űrlap mezőhöz lehet rendelni az opcionális vagy kötelezően kitöltött
			jellege a mezőnek. Ez a tulajdonság is egyszerűen kifejezhető számosságok
			segítségével, a kötelezően kitöltött mezőnek pontosan egy értéket kell adni,
			míg az opcionális mezőnél ez az érték minimum nulla és maximum egy.

		\subsection{Mezők típusának megkötése}

			Az űrlap megjelenítésének elengedhetetlen része a mezők típusának megadása.
			Ezt az információt egyértelműen meghatározza a tudásbázisban definiált
			tulajdonságok értékkészlete. Az OWL formátum alapvetően két féle
			tulajdonságot enged definiálni: adat tulajdonság (Data property) illetve
			objektum tulajdonság (Object property). A kettő között a különbség az, hogy
			az adat tulajdonságok esetében a tulajdonság értékkészlete valamilyen XSD
			szabványnak megfelelő adattípus\cite{xsd-datatypes}, az objektum tulajdonság
			értékkészlete pedig egy OWL osztálynak felel meg.
			
			Az egyszerű adattípussal rendelkező tulajdonságok egyszerűen
			megfeleltethetők egyszerű szöveges mezőknek az űrlapon, illetve az
			adattípustól függően valamilyen speciális elem (dátum vagy boolean típus
			esetén például) szükséges a mező megjelenítéséhez. Az egyszerűség kedvéért
			én minden adatmezőnek egy szövegbeviteli mezőt használtam, és ezen felül
			valósítottam meg a beadott adatok típushelyességének ellenőrzését. A
			rendszer képes kezelni saját XSD típusokat is, mint például a neptun kód,
			ami XSD reguláris kifejezésként definiálható, mint hat darab alfanumerikus
			karakter.
			
			 Az objektum
			tulajdonságok értékének viszont egy adott osztálynak megfelelő egyedet kell
			megadni, amit nem lehet egyszerű mezőként ábrázolni az űrlapon. Ebben az
			esetben ugyanazt az ötletet alkalmaztam mint a teljes űrlap esetében, az
			objektum tulajdonságok értékkészletét adó osztályt az űrlap alapját képező
			osztályhoz hasonlóan példányosításra alkalmas űrlapot hozok létre és
			beillesztem az objektum tulajdonsághoz rendelt mező helyére. Az űrlapon ez
			egy beágyazott űrlapként jelenik meg.

			A beágyazott űrlap megfelelő eszköz az űrlapon szereplő mezők
			csoportosítására, illetve hogy az űrlap szerkezete kövesse a tudásbázisban
			szereplő fogalmak szerkezetét. Az általam kipróbált példában, a rendszeres
			szociális támogatás modelljében a szociális támogatást igénylő hallgató adat
			tulajdonságként tartalmazza a nevét és Neptun kódját (örökölve a hallgató
			osztálytól), és külön osztályokként vannak ábrázolva az egyes szociális
			támogatás kritériumok, amik alapján pontokat kap a hallgató. Például a
			család egy főre eső jövedelme alapján is kap pontszámot a hallgató. Az űrlap
			kitöltésekor az ``Egy főre eső jövedelem'' osztályhoz is létrejön egy egyed,
			ami adat tulajdonságként tartalmazza az egy főre eső jövedelem tényleges
			értékét, és az erre kapott szociális támogatás pontszámot.

		\subsection{Mezők megjelenítésének szabályozása}

			Minden űrlapon kulcsfontosságú feladat a mezők átlátható és esztétikus
			elrendezése és megjelenítése. Mindkét általam kipróbált módszer esetén
			(online (\ref{ch3:online}. szakasz) és offline (\ref{ch3:offline} szakasz)
			kitöltés) a webes alkalmazásokban elterjedt kaszkád stíluslapok (CSS\cite{css}) technológiáját
			használtam. Ez a technológia alkalmazható mind az online kitöltésnél
			használt HTML, mind az offline kitöltésben szereplő XForms dokumentumok
			megjelenítésének szabályozására. Ennek a módszernek a segítségével
			cserélhető és könnyen alakítható stílust lehet adni az űrlapnak.
			
			A tudásbázisra két követelményt ró a megjelenítés, ez pedig a feliratok és a
			mezők sorrendezése. A feliratok definiálására az RDF szabvány által leírt
			cimke (\emph{label}) és megjegyzés (\emph{comment}) annotációkat használtam,
			ami szabványos megközelítés nyelvfüggő feliratok és megjegyzések csatolásához
			ontológiabeli elemekhez. Az űrlap modell tartalmaz feliratot az űrlapon
			szereplő összes mezőhöz, és opcionálisan megjegyzést is adhat ott, ahol
			további magyarázat lehet szükséges a felhasználó számára. 

			A mezők sorrendjének megadására is többféle megoldás lehetséges, én a lehető
			legegyszerűbb módszert választottam, minden mezőhöz annotációval rendelhető
			egy nem negatív egész érték. Ezek után egy űrlapon belül a mezőket ezen súly
			alapján növekvő sorban rendezem. A beágyazott űrlapok mezőit azonban
			a rendszer nem sorrendezi egyben a többivel, ott a beágyazott űrlapot egyben
			helyezi el a többi mező között és ezután rendezi a beágyazott űrlapon belüli 
			mezőket külön.
	
		\subsection{Származtatott mezők}

			A rendszer lehetőséget biztosít származtatott mezők definiálására is,
			melyeket nem a felhasználó tölt ki, hanem a tudásbázis alapján
			automatikusan számolja ki az értékét a program más mezők értékei alapján. Az
			érték kiszámítása SWRL szabályokkal történik. Az itt alkalmazható SWRL
			szabályokra nincs megkötés, csupán a származtatott tulajdonságot kell egy
			annotációval megjelölni, hogy a rendszer észrevegye és parancsot adjon a
			következtetőgépnek a számítás elvégzésére.
			
			Teljes mértékben támogatott a mezők több szintű származtatása, azaz egy
			származtatott mező más származtatott mező értékétől is függ. A rendszer
			azonban nem enged meg rekurziót, ha egy származtatott érték függ a saját
			értékétől akár csak közvetve, a rendszer nem lesz képes kiszámolni.
			
			Ilyen módon származtatott mezők használhatóak az űrlap előzetes
			feldolgozására, illetve visszajelzésre a felhasználó felé. A szociális
			támogatás igénylés példájánál maradva SWRL szabályokkal van
			megadva a szociális pontok számítása az összes kritériumra és a végén SWRL
			szabály összegzi a teljes űrlapra kapható pontszámot. Ezek az értékek fontos
			visszajelzést jelentenek a felhasználó számára és könnyítik a kitöltés
			folyamatát.
			
			Ahogy említettem a \ref{ch3:offline} részben, offline kitöltés esetén nincs
			közvetlen kapcsolat a tudásbázissal, így ezek az értékek nem számíthatóak ki
			a kitöltés közben, a felhasználó ezeket az értékeket csak úgy tudhatja meg,
			ha elküldi a kiszolgálónak kitöltött űrlapot.
			
		\subsection{Bemeneti dokumentumok}
			
			A rendszer lehetőséget biztosít bizonyos objektum tulajdonságot bemeneti
			dokumentummezőként megjelölni. Az így megjelölt objektum tulajdonságok az
			űrlapon nem beágyazott űrlapként jelennek meg, hanem egy korábban, akár más
			felhasználó által kitöltött űrlapból generált egyed adatai jelennek meg
			formázott, nem szerkeszthető formában.
			
			Ennek a funkciónak az a célja, hogy lehetőséget adjon több űrlapból álló
			folyamatok modellezésére. Ez a lehetőség hasznos lehet a szociális támogatás
			igénylés esetén is, ahol a hallgató által kitöltött adatok megjelennek egy
			másik űrlapban egy elbíráló számára, aki elfogadhatja, visszautasíthatja
			illetve meghatározhatja a hallgató számára juttatandó szociális támogatás
			összegét, esetleg hiányosságokra hívja fel a hallgató figyelmét.
			
			Ugyanezt tovább ragozva adhatunk lehetőséget a hallgató számára a
			döntés fellebezésére, illetve a javítások végrehajtására.
			
	\section{Kimeneti formátum}

		Az űrlap kimenete minden esetben egy vagy több OWL egyed, amelyeket az űrlap
		kitöltése során hozott létre a felhasználó. Egy űrlap a beágyazott űrlapok
		miatt hozhat létre több egyedet, melyek együtt alkotják a kitöltött űrlapot.
		Ezen egyedek megfelelnek az OWL DL formátum megkötéseinek, és a tárgyterületi
		tudásmodellel állnak kapcsolatban. Fontos megjegyezni, hogy az űrlap
		kimeneteként generált OWL egyedek nem tartalmaznak űrlapspecifikus adatokat,
		azaz nem függenek az űrlap modelltől. Ez azért fontos, mert egy tetszőleges
		tárgyterületi ontológiát felhasználva készített űrlap eredménye tetszőleges
		eszközzel feldolgozható és nem kell az űrlap modelljét továbbvinni.

		Az OWL egyedet felhasználva természetesen más jellegű dokumentumok is
		generálhatóak akár ember akár számítógép számára XSLT transzformációval vagy
		a dokumentum közvetlen generálásával és stílus hozzárendelésével.

	\section{Rendszeres szociális támogatás modellje}
		
		\label{ch5:szoctam-modell}
	
		Mint azt a bevezetőben is említettem, az eszköz kipróbálásához létrehoztam a
		rendszeres szociális támogatás szabályzatának egyszerűsített modelljét. A
		modell főként a ``Hallgatók besorolása szociális helyzetük
		alapján''\cite{szoctam} című dokumentumot követi, hiszen az írja le a
		szociális támogatást igénylő hallgatók által kapott pontok és a megadott
		adatok közötti kapcsolatot. Ez a kapcsolat egyrészt megadja, hogy milyen 
		adatokra van szükség, és hogy
		ezekből hogyan számolható a szociális helyzetet értékelő pontszám.

		A modell középpontjában a ``Szociális támogatást igénylő hallgató'' fogalma
		áll, amely rendelkezik névvel, Neptun kóddal és telefonszámmal, továbbá a
		szociális helyzetét befolyásoló adatokkal. A \ref{fig:szoctam_model} ábrán
		látható a modell egy része. Az ábrázolás módjának osztály diagrammot
		választottam, mivel ezzel jól ábrázolhatóak az OWL osztályok.
		
		\begin{figure}[!ht]
			\centering
			\includegraphics[width=100mm, keepaspectratio]{figures/ch5/szoctam_model.png}
			\caption{Szociális támogatást igénylő hallgató modellje} 
			\label{fig:szoctam_model}
		\end{figure}

		Az ábrán az egyszerűség kedvéért csak egy kritériumot jelenítettem meg, de
		ez alapján már látható, hogyan kapcsolódnak az egyes kritériumok a
		hallgatóhoz. Minden kritérium meghatározza a kritérium szerint a hallgatónak
		adható pontszám számításához szükséges adatokat, és SWRL szabályokkal
		módszert ad annak a számítására. 
		
		Az ``egy főre eső havi nettó jövedelem'' alapján adott pontszám
		számítását a feljebb is ismertetett ``Hallgatók besorolása szociális helyzetük
		alapján''\cite{szoctam} című dokumentum egy táblázattal határozza meg. A
		táblázat a jövedelem egy intervallumához rendel hozzá egy pontszámot. Például
		ha az egy főre eső havi nettó jövedelem legalább 43001 Forint és legfeljebb 
		44500 Forint, akkor a hallgató erre a kritériumra 33 pontot kap.
		
		SWRL leírásban a táblázat ezen sora a következőképpen néz ki:
		
		 \begin{align*}
			\mbox{EgyForeEsoJovedelem}(?x)  \wedge
			\mbox{Egy\_Fore\_Eso\_Jovedelem}(?x,?y) &\wedge & \\ 
			\mbox{swrlb:greaterThanOrEqual}(?y,43001) &\wedge & \\
			\mbox{swrlb:lessThanOrEqual}(?y,44500) &\Rightarrow\ & \mbox{Pontszam}(?x,33)
		\end{align*}
 
		A tudásmodell az összes sorra tartalmaz egy hasonló jellegű szabályt, így
		miután a felhasználó kitöltötte az űrlapon a rá vonatkozó értékét az ``egy
		főre eső jövedelem'' mezőnek és az űrlap kimenetét képező egyed be lett
		töltve a tudásbázisba, a tudásbázishoz kapcsolt következtetőgép meghatározza
		az egyedhez tartozó számolt értéket.
		
		A fenti leírásban a tudásmodell egy végletesen leegyszerűsített részét
		mutattam be. Az egyszerűsítésre szükség van, hogy a modell áttekinthető
		maradjon és érthető legyen a működése, azonban a modell, amivel kipróbáltam a
		rendszert a bemutatottnál lényegesen bonyolultabb, bár nem fedi le teljesen a
		szociális támogatás modelljét. Az eszköz kipróbáláshoz a teljesség
		elhagyható és elég volt a bonyolultabb részekre koncentrálnom.

		A tudásmodell jelenlegi állapotában 22 osztály- és 31 tulajdonságdefiníciót
		tartalmaz és lefedi a rendszeres szociális támogatásban leírt kritériumok
		nagy részét. A feldolgozásban segítő, azaz a szociális pontokat kiszámító
		SWRL szabályokból 39 darabra volt szükségem a megcélzott kritériumok
		számításához.
		